﻿#pragma once

#include "G4VModularPhysicsList.hh"  //一般用户自定义的PhysicsList类继承于此
//#include "globals.hh"

class G4VPhysicsConstructor;
class PhysicsListMessenger;

//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......

class PhysicsList : public G4VModularPhysicsList
{
public:
    PhysicsList();
    ~PhysicsList() override;

    void ConstructParticle() override;
    void ConstructProcess() override;

    void AddPhysicsList(const G4String&);
    void SetCuts() override;  // 设置粒子截断

private:
    PhysicsList& operator=(const PhysicsList& right) = default;
    PhysicsList(const PhysicsList&) = default;

    G4VPhysicsConstructor* _fEmPhysicsList;
    G4VPhysicsConstructor* _fDecayList;
    std::vector<G4VPhysicsConstructor*> _fHadronPhys;
    PhysicsListMessenger* pMessenger;
};
